<?php
class Zen_Dispatch extends Zen_Front
{
    protected $_Zen_Dispatch = array();

    //@todo　在获取模块和动作时，在模块名和动作名中可能会出现-或_符号，如果这样仍需进一步处理
    public function start()
    {
        if (is_null(Zen::$module)) {
            //获取当前请求的模块
            Zen::$module = (isset($_GET['m'])&&!empty($_GET['m'])) ? $_GET['m']
                                                              : $this->_config['module_default'];
        }
        Zen::$module = strtolower(Zen::$module);

        $m_path = $this->_dependency->getModule();

        //获取模块配置，可以覆盖模块总配置和全局配置
        if (file_exists($m_path."/Config/config.php")) {
            //模块配置文件
            $m_conf = include $m_path."/Config/config.php";
            //如果有设置默认action，则使用此action
            if (isset($m_conf['Zen_Front']['action_default'])) {
                $this->_config =  array_merge($this->_config, $m_conf['Zen_Front']);
                Zen::$config['Zen_Front'] = array_merge(Zen::$config['Zen_Front'], $this->_config);
            }
        }

        if (is_null(Zen::$action)) {
            //获取当前请求的动作
            Zen::$action = (isset($_GET['a'])&&!empty($_GET['a'])) ? $_GET['a']
                                                                   : $this->_config['action_default'];
        }

        Zen::$action = strtolower(Zen::$action);

        Zen::$vendor = Zen::factory("Zen_Module")->vendor(Zen::$module);
    }
}